# -*- coding: utf-8 -*-


def before_return(images: list, data: list):
    """数据返回前会调用该钩子函数进行处理
    使用场景：
    1. 对抽取到的值做某些处理，例如对某些值进行过滤，或者对抽取到的某些值运算等；
    2. 判断抽取到的值是否符合要求，如果符合要求则返回status=1，否则status=0，这样可以用于质检等；
    3. 可以对抽取到的值增加一些变量，或者减少一些变量，增加变量时要主要保持数据结构一致
    :param images list 文档分拆出来的图像列表，特殊情况才需要依赖图像进行计算，例如可以获取每一页的图像大小，总页数等
    :param data list 抽取得到的数据，格式如：
        [
            // 第一个抽取变量
            {
                "variable_name": "变量名",
                "data": [    // 每个抽取变量可能会抽取到多个值
                    {        // 变量对应的第一个抽取到的值
                        "type": "text",   // 值类型，支持有：text/image/table
                        "text": "",       // 当type=text时，该值为抽取到的文本，当type=image时，该值为对应图像的base64字符串
                        "tables": [       // 当type=table时，抽取到的单元格的详细信息
                            "text": [....],
                            "box": [....],
                            "cols": [],
                            "rows": [],
                        ],
                        "page": [1],      // 抽取到的值所在的页码，可能会包含多个值
                        "box": [[x1, y1, x2, y2]],  // 抽取到的值所在的box，可能会包含多个box
                        ....
                    },
                    // 更多抽取到的值
                ]
            },
            // 更多抽取变量......
        ]
    :return status int 后处理状态，通常用于标识成功或者失败，该值会存储到数据库的machine_status字段中，该值没有统一的定义，各个文档类型可以自定义解释即可
    :return data list 处理后的抽取数据，注意格式要和输入保持一致
    """
    status = 0
    # do somethings ....
    # 新增一个字典值变量
    data.append({
        "variable_name": "新字典变量",
        # 定义字典的初始化值：新增字典值的时候，使用这个值进行初始化
        "init_value": {
                "type": "dict",    # 类型为字典
                "text": "",
                "dict": {          # 这是字典值
                    "姓名": "",
                    "年龄": 0
                },
                "tables": [],
                # page与box如果有值，则会自动进行定位
                "page": [],
                "box": [],
        },
        "data": [
            {    # 第一个字典值
                "type": "dict",
                "text": "",
                "dict": {
                    "姓名": "张三",
                    "年龄": 40
                },
                "tables": [],
                "page": [],
                "box": [],
            },
            {    # 第二个字典值
                "type": "dict",
                "text": "",
                "dict": {
                    "姓名": "李四",
                    "年龄": 20
                },
                "tables": [],
                "page": [],
                "box": [],
            },
        ]
    })
    return status, data
